#ifndef __GTK_TREE_ENTRY_H__
#define __GTK_TREE_ENTRY_H__

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include <gtk/gtk.h>

#define GTK_TYPE_TREE_ENTRY          (gtk_tree_entry_get_type())
#define GTK_TREE_ENTRY(obj)          (GTK_CHECK_CAST (obj, gtk_tree_entry_get_type (), GtkTreeEntry))
#define GTK_TREE_ENTRY_CLASS(klass)  (GTK_CHECK_CLASS_CAST (klass, gtk_tree_entry_get_type (), GtkTreeEntryClass))
#define GTK_IS_TREE_ENTRY(obj)       (GTK_CHECK_TYPE (obj, gtk_tree_entry_get_type ()))

typedef struct _GtkTreeEntry        GtkTreeEntry;
typedef struct _GtkTreeEntryClass   GtkTreeEntryClass;

typedef void ( *GtkTreeEntryDestroy )( GtkTreeEntry* entry, gpointer context );

struct _GtkTreeEntry {
  GObject parent;                     /* object instance */
  gchar*  label;                      /* label - always copied by this object except on get */
  gchar*  collate_key;                /* collate key used for string comparisons/sorting */
  gpointer userdata;                  /* untouched userdata */
  GtkTreeEntryDestroy destroy_func;   /* called upon destruction - use for freeing userdata etc. */
  gpointer destroy_func_data;         /* context passed to destroy_func */
};

struct _GtkTreeEntryClass {
  GObjectClass parent;
};

GtkTreeEntry* gtk_tree_entry_new( void );
GtkType    gtk_tree_entry_get_type( void );
gchar*     gtk_tree_entry_get_collate_key( GtkTreeEntry* entry );
gchar*     gtk_tree_entry_get_label( GtkTreeEntry* entry );
gpointer   gtk_tree_entry_get_userdata( GtkTreeEntry* entry );
void     gtk_tree_entry_set_label( GtkTreeEntry* entry, const gchar* label );
void   gtk_tree_entry_set_userdata( GtkTreeEntry* entry, gpointer userdata );
void   gtk_tree_entry_set_destroy_func( GtkTreeEntry* entry,GtkTreeEntryDestroy destroy_func,gpointer destroy_func_data );

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* __GTK_TREE_ENTRY_H__ */
